package com.crazymakercircle.imServer.server.session.entity;

import com.crazymakercircle.entity.ImNode;
import lombok.Builder;
import lombok.Data;

import java.io.Serializable;

/**
 * create by 事了拂衣去
 **/
/*统一数据格式，方便扩展
所有会话相关的信息都集中在一个类中，易于维护和扩展。
如果将来需要新增字段（如设备类型、登录时间），只需在 entity 中添加即可。*/
@Data
@Builder
public class SessionCache implements Serializable
{
    /*这里的 serialVersionUID 是为了保证 SessionCache 类在不同时间或环境下的序列化数据能被正确地读取和还原。*/
    private static final long serialVersionUID = -403010884211394856L;/*是 Java 序列化机制中的一个唯一标识符，用于标识一个类的不同版本。*/
/*当一个类实现了 Serializable 接口（即支持序列化），Java 会使用这个字段来验证序列化对象和当前类定义是否兼容。*/
    /*版本标识  ——标识类的不同版本，确保序列化兼容性
防止反序列化错误  ——显式声明避免因类结构变化导致的异常
控制兼容性     ——手动维护可更灵活地控制类的演化策略*/

    //用户的id
    private String userId;
    //session id
    private String sessionId;

    //节点信息
    private ImNode imNode;

    public SessionCache()
    {
        userId = "";
        sessionId = "";
        imNode = new ImNode("unKnown", 0);
    }

    public SessionCache(
            String sessionId, String userId, ImNode imNode)
    {
        this.sessionId = sessionId;
        this.userId = userId;
        this.imNode = imNode;
    }


}
